home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-05-10 | 1.6 KB | 73 lines | [TEXT/ttxt] |
- # Takes a Wavefront obj file and turns it into nff format
- # (currently translates only the Viewpoint .obj type files)
- # Outputs groups together, marking each group with a "# group foo" comment
- #
- # Eric Haines, 3D/Eye Inc erich@eye.com
- # v1.0, 11/10/92
-
- cat $* | awk '
- {
- if ( $1 == "#" ) {
- print $0
- } else if ( $1 == "$" ) {
- print "#"$0
- } else if ( $1 == "g" ) {
- grp = $2
- for ( i = 3 ; i <= NF ; i++ ) {
- grp = grp" "$i
- }
- groups[grp] = grp
- } else if ( $1 == "v" ) {
- nv++
- v[nv] = $2" "$3" "$4
- } else if ( $1 == "vn" ) {
- nvn++
- vn[nvn] = $2" "$3" "$4
- # } else if ( $1 == "vt" ) {
- # nvt++
- # vt[nv] = $2" "$3" "$4
- # } else if ( $1 == "s" ) {
- # str = $2
- # for ( i = 3 ; i <= NF ; i++ ) {
- # str = str" "$i
- # }
- # printf( "# smoothing group %s\n", str )
- } else if ( $1 == "f" ) {
- if ( NF > 1 ) {
- if ( index($2,"//") ) {
- ng = ++ngrp[grp]
- sg[grp,ng] = NF-1
- for ( i = 2 ; i <= NF ; i++ ) {
- delim = index($i,"//")
- n1 = substr($i,1,delim-1)
- n2 = substr($i,delim+2,length($i)-delim-1)
- j = i-1
- sv[grp,ng,j] = sprintf( "%s %s",v[n1],vn[n2] )
- }
- } else {
- printf("sorry, do not recognize the format %s yet - teach me!\n",$0 )
- exit
- }
- }
- }
- }
- END {
- for ( typ in groups ) {
- if ( ngrp[typ] > 0 ) {
- printf( "# group %s\n", typ )
- for ( ng = 1 ; ng <= ngrp[typ] ; ng++ ) {
- printf ("pp %d\n", sg[typ,ng] )
- numv = sg[typ,ng]
- for ( i = 1 ; i <= numv ; i++ ) {
- print sv[typ,ng,i]
- }
- np++
- }
- }
- }
- printf( "# %d vertices, %d normals\n", nv, nvn )
- printf( "# %d polygons\n", np )
- }'
-
-
-